// 导入API模块
const api = require('../../../api/index');

Page({
  data: {
    userId: '',
    personalityType: '',
    personalityName: '',
    personalityDescription: '',
    careerSuggestions: [],
    eiPercent: 0,
    snPercent: 0,
    tfPercent: 0,
    jpPercent: 0,
    versionId: 'unknown'
  },
  
  onLoad: function(options) {
    wx.setNavigationBarTitle({
      title: 'MBTI测试结果'
    });
    
    const { type, ei, sn, tf, jp, userId, versionId } = options;
    
    this.setData({
      personalityType: type,
      eiPercent: parseInt(ei) || 50,
      snPercent: parseInt(sn) || 50,
      tfPercent: parseInt(tf) || 50,
      jpPercent: parseInt(jp) || 50,
      userId: userId || this.getUserId(), // 从options获取userId，如果没有则尝试从本地获取
      versionId: versionId || 'unknown' // 保存versionId
    });
    
    this.loadPersonalityInfo(type);
    
    // 如果有有效的MBTI类型和用户ID，记录测试结果
    if (type && this.data.userId) {
      this.submitTestResult(type);
    }
  },
  
  // 从本地存储或全局获取用户ID
  getUserId: function() {
    const app = getApp();
    let userId = "";
    
    // 尝试从全局获取用户ID
    if (app.globalData && app.globalData.userId) {
      userId = app.globalData.userId;
    } else {
      // 如果全局没有，从存储中获取
      try {
        const userInfo = wx.getStorageSync('userInfo');
        if (userInfo && userInfo.userId) {
          userId = userInfo.userId;
        }
      } catch(e) {
        console.error('获取用户信息失败:', e);
      }
    }
    
    // 如果没有用户ID，生成一个临时ID
    if (!userId) {
      userId = 'temp_' + Date.now() + '_' + Math.floor(Math.random() * 10000);
      // 如果有全局对象，保存到全局
      if (app.globalData) {
        app.globalData.userId = userId;
      }
      // 保存到本地存储
      try {
        wx.setStorageSync('userInfo', { userId: userId });
      } catch(e) {
        console.error('保存用户信息失败:', e);
      }
    }
    
    return userId;
  },
  
  // 提交测试结果到API
  submitTestResult: function(mbtiType) {
    const { eiPercent, snPercent, tfPercent, jpPercent, userId, versionId } = this.data;
    
    // 根据百分比计算各个维度的分数
    // 假设每个维度最多10分，百分比表示一个维度比另一个占多少
    const eScore = Math.round(eiPercent / 10);
    const iScore = 10 - eScore;
    const sScore = Math.round(snPercent / 10);
    const nScore = 10 - sScore;
    const tScore = Math.round(tfPercent / 10);
    const fScore = 10 - tScore;
    const jScore = Math.round(jpPercent / 10);
    const pScore = 10 - jScore;
    
    // 创建得分详情对象
    const scoreDetails = {
      E: eScore,
      I: iScore,
      S: sScore,
      N: nScore,
      T: tScore,
      F: fScore,
      J: jScore,
      P: pScore
    };
    
    console.log('result页面尝试提交MBTI测试结果:', { userId, mbtiType, versionId });
    
    // 调用API模块方法
    api.mbti.submitTestResult(userId, mbtiType, scoreDetails, versionId)
      .then(result => {
        if (result && result.success === false) {
          console.warn('result页面 - MBTI测试结果提交返回失败:', result.message);
          // 这是非关键功能，即使失败也不影响用户查看结果
        } else {
          console.log('result页面 - MBTI测试结果提交成功');
        }
      })
      .catch(error => {
        console.error('result页面 - MBTI测试结果提交失败:', error);
        // 这是非关键功能，即使失败也不影响用户查看结果
      });
  },
  
  loadPersonalityInfo: function(type) {
    // 根据类型加载对应的性格描述和职业建议
    const personalityInfo = this.getPersonalityInfo(type);
    
    this.setData({
      personalityName: personalityInfo.name,
      personalityDescription: personalityInfo.description,
      careerSuggestions: personalityInfo.careers
    });
  },
  
  getPersonalityInfo: function(type) {
    // 定义各种MBTI类型的信息
    const typeInfo = {
      'INTJ': {
        name: '建筑师',
        description: 'INTJ型人格的人通常被称为"建筑师"，他们是战略家，擅长逻辑分析和系统思考。他们独立、理性、要求高，追求不断改进和发展。他们喜欢理论和抽象概念，能够看到事物的整体模式和连接，善于规划长期战略。',
        careers: ['科学家', '程序员', '系统分析师', '工程师', '投资银行家', '法官', '商业策略师', '大学教授']
      },
      'INTP': {
        name: '思想家',
        description: 'INTP型人格的人通常被称为"思想家"或"逻辑学家"，他们是概念架构师，喜欢理论分析和抽象思考。他们渴望理解一切事物的本质，对逻辑一致性有高要求。他们擅长识别模式和问题所在，但可能对日常事务不太关注。',
        careers: ['计算机程序员', '软件开发者', '系统分析师', '科学家', '哲学家', '大学教授', '作家', '法律顾问']
      },
      'ENTJ': {
        name: '指挥官',
        description: 'ENTJ型人格的人通常被称为"指挥官"，他们是天生的领导者，有组织能力、决断力和魄力。他们直接、理性、要求高，追求效率和成功。他们擅长战略规划、组织管理和决策，但可能对他人情感需求不够敏感。',
        careers: ['企业高管', '管理顾问', '企业家', '律师', '政治家', '项目经理', '市场总监', '金融分析师']
      },
      'ENTP': {
        name: '辩论家',
        description: 'ENTP型人格的人通常被称为"辩论家"或"发明家"，他们思维敏捷，充满想象力和创新精神。他们喜欢挑战常规，提出新观点，善于辩论和解决复杂问题。他们灵活多变，适应力强，但可能难以坚持完成长期项目。',
        careers: ['企业家', '律师', '广告创意总监', '市场营销顾问', '商业战略顾问', '发明家', '软件开发者', '科学家']
      },
      'INFJ': {
        name: '提倡者',
        description: 'INFJ型人格的人通常被称为"提倡者"或"理想主义者"，他们是理想主义者，富有同情心和洞察力。他们关注人类潜能和成长，热衷于为世界带来积极变化。他们深思熟虑，富有创造力，能看到事物的深层含义。',
        careers: ['心理顾问', '社会工作者', '作家', '教师', '人力资源专家', '非营利组织工作者', '医疗保健顾问', '职业规划顾问']
      },
      'INFP': {
        name: '调停者',
        description: 'INFP型人格的人通常被称为"调停者"或"治愈者"，他们是理想主义者，重视个人价值观和内心和谐。他们富有同情心和创造力，关注人类潜能和成长，追求真实性和意义。他们擅长理解他人的情感和需求，但可能过于理想化。',
        careers: ['作家', '心理顾问', '艺术家', '教师', '社会工作者', '记者', '人力资源专家', '非营利组织工作者']
      },
      'ENFJ': {
        name: '主人公',
        description: 'ENFJ型人格的人通常被称为"主人公"或"教导者"，他们热情、有魅力，善于领导和激励他人。他们关注人际关系和群体和谐，能够看到他人的潜能并帮助他们成长。他们富有同理心和使命感，追求积极的社会变革。',
        careers: ['教师', '教练', '人力资源经理', '营销总监', '政治顾问', '企业培训师', '非营利组织领导者', '公共关系专家']
      },
      'ENFP': {
        name: '活动家',
        description: 'ENFP型人格的人通常被称为"活动家"或"探险家"，他们热情、创新、充满活力，善于发现可能性和联系。他们关注人类潜能和成长，能够激发他人灵感和动力。他们灵活多变，适应力强，但可能难以遵循常规和细节。',
        careers: ['创意总监', '市场营销专家', '公关顾问', '企业家', '演员', '心理咨询师', '培训师', '人力资源专家']
      },
      'ISTJ': {
        name: '物流师',
        description: 'ISTJ型人格的人通常被称为"物流师"或"检查员"，他们踏实、可靠、重视秩序和传统。他们擅长关注细节，遵循规则和程序，追求高效和准确。他们实际、负责、组织能力强，但可能不够灵活和创新。',
        careers: ['会计师', '财务分析师', '审计师', '军事或警务人员', '项目经理', '法官', '律师', '系统管理员']
      },
      'ISFJ': {
        name: '守卫者',
        description: 'ISFJ型人格的人通常被称为"守卫者"或"保护者"，他们尽职尽责、关心他人、重视传统和安全。他们关注细节，热爱秩序，愿意为他人提供实际帮助。他们忠诚、善良、有耐心，但可能过度担忧和避免变化。',
        careers: ['护士', '初级教育教师', '人力资源专员', '医疗保健工作者', '社会工作者', '行政助理', '客户服务代表', '记录保管员']
      },
      'ESTJ': {
        name: '总经理',
        description: 'ESTJ型人格的人通常被称为"总经理"或"主管"，他们务实、注重秩序、组织能力强。他们遵循规则和传统，关注效率和结果，善于计划和执行。他们直接、负责、可靠，但可能不够灵活和宽容。',
        careers: ['业务经理', '银行经理', '军官', '政府官员', '财务主管', '项目协调员', '销售经理', '保险代理']
      },
      'ESFJ': {
        name: '执政官',
        description: 'ESFJ型人格的人通常被称为"执政官"或"领事"，他们友好、合作、重视和谐与传统。他们关心他人的需要和感受，愿意提供实际帮助和支持。他们负责、有组织、善于社交，但可能过于在意他人的看法和期望。',
        careers: ['教师', '医疗保健工作者', '销售代表', '人力资源专员', '公共关系专家', '顾客服务经理', '社会工作者', '活动策划师']
      },
      'ISTP': {
        name: '鉴赏家',
        description: 'ISTP型人格的人通常被称为"鉴赏家"或"工匠"，他们务实、独立、灵活，擅长解决实际问题。他们喜欢使用工具和技术，关注事物如何运作，善于适应和应对危机。他们冷静、理性、注重效率，但可能不够计划性和情感表达。',
        careers: ['机械师', '工程师', '飞行员', '建筑师', '法医科学家', '程序员', '运动员', '急救人员']
      },
      'ISFP': {
        name: '探险家',
        description: 'ISFP型人格的人通常被称为"探险家"或"艺术家"，他们敏感、温和、追求自由和美感。他们关注当下的体验和感受，喜欢有个人空间和自主权。他们有艺术气质和审美能力，但可能不够自信和决断。',
        careers: ['艺术家', '音乐家', '摄影师', '厨师', '室内设计师', '美容师', '景观设计师', '护理人员']
      },
      'ESTP': {
        name: '企业家',
        description: 'ESTP型人格的人通常被称为"企业家"或"冒险家"，他们精力充沛、务实、适应力强，善于处理危机和谈判。他们喜欢活在当下，关注实际结果，乐于冒险和尝试新事物。他们机智、灵活、行动导向，但可能缺乏长期规划。',
        careers: ['企业家', '销售人员', '市场营销专家', '运动员', '警察或消防员', '演员', '管理顾问', '建筑商']
      },
      'ESFP': {
        name: '表演者',
        description: 'ESFP型人格的人通常被称为"表演者"或"艺人"，他们外向、友好、充满活力，喜欢成为关注的焦点。他们活在当下，乐于享受生活，善于感知他人的情绪和需求。他们实际、灵活、富有同情心，但可能缺乏规划和自律。',
        careers: ['演员', '舞者', '销售人员', '旅游顾问', '儿童看护人员', '活动策划师', '造型师', '个人教练']
      }
    };
    
    return typeInfo[type] || {
      name: '未知类型',
      description: '无法获取该性格类型的详细信息。',
      careers: ['无法提供职业建议']
    };
  },
  
  retakeTest: function() {
    wx.redirectTo({
      url: '/pages/mbti/mbti'
    });
  },
  
  onShareAppMessage: function() {
    return {
      title: `我的MBTI性格类型是${this.data.personalityType}-${this.data.personalityName}`,
      path: `/pages/mbti/mbti`
    };
  }
}) 